<?php

namespace App\Enums;

/**
 * 箱号来源
 */
enum BoxFrom: int
{
    case MANUAL_CREATION = 1; // 手动创建
    case PURCHASE_ORDER = 2; // 采购订单
    case REPORT_ORDER = 3; // 生产汇报单
    case Other_WARE = 4; // 其他入库

    /**
     * 获取名称
     * @return string
     */
    public function label(): string
    {
        return match ($this) {
            self::MANUAL_CREATION => "手动创建",
            self::PURCHASE_ORDER => "采购订单",
            self::REPORT_ORDER => "生产汇报单",
            self::Other_WARE => "其他入库",
        };
    }

    /**
     * 根据值获取名称
     * @param $val
     * @return string
     */
    static function labelBy($val){
        $obj = self::tryFrom((int)$val);
        return $obj ? $obj->label() : '';
    }
}
